unsigned char cpu_to_node[NR_CPUS] __read_mostly = {
[0 ... NR_CPUS-1] = NUMA_NO_NODE
};
-/*
- * Keep BIOS's CPU2node information, should not be used for memory allocaion
- */
unsigned char apicid_to_node[MAX_LOCAL_APIC] __cpuinitdata = {
[0 ... MAX_LOCAL_APIC-1] = NUMA_NO_NODE
};
*/
void __devinit init_cpu_to_node(void)
{
- int i, node;
+ int i;
for (i = 0; i < NR_CPUS; i++) {
u32 apicid = x86_cpu_to_apicid[i];
if (apicid == BAD_APICID)
continue;
- node = apicid_to_node[apicid];
- if ( node == NUMA_NO_NODE || !node_online(node) )
- node = 0;
- numa_set_node(i, node);
+ if (apicid_to_node[apicid] == NUMA_NO_NODE)
+ continue;
+ numa_set_node(i,apicid_to_node[apicid]);
}
}
#include <xen/rcupdate.h>
#include <xen/vga.h>
#include <xen/dmi.h>
-#include <xen/nodemask.h>
#include <public/version.h>
#ifdef CONFIG_COMPAT
#include <compat/platform.h>
u32 apicid = x86_cpu_to_apicid[cpu];
node = apicid_to_node[apicid];
- if ( node == NUMA_NO_NODE || !node_online(node) )
+ if ( node == NUMA_NO_NODE )
node = 0;
numa_set_node(cpu, node);
}
#else
if (!per_cpu(compat_arg_xlat, cpu))
- setup_compat_arg_xlat(cpu, cpu_to_node[cpu]);
+ setup_compat_arg_xlat(cpu, apicid_to_node[apicid]);
#endif
if (!idt_tables[cpu]) {
}
if ( setup_compat_arg_xlat(smp_processor_id(),
- cpu_to_node[0]) )
+ apicid_to_node[boot_cpu_physical_apicid]) )
panic("Could not setup argument translation area");
}